package com.java.jvm;

/**
 * 系统中的类加载器分析
 * 1)不同类加载器有不同类加载职责
 * 2)如何获取这些常用的类加载器？
 */
public class ClassLoaderTests {
    public static void main(String[] args) {

        //1.AppClassLoader (应用加载器，默认加载ClassPath路径中的类-大部分是我们自己写的类)
        ClassLoader systemClassLoader =
                ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);

        //2.ExtClassLoader(扩展类加载器，负责加载ext包中的类)
        ClassLoader parent = systemClassLoader.getParent();
        System.out.println(parent);

        //3.BootStrapClassLoader(根类加载器，负责加载基础类库中的类-rt.jar)
        parent=parent.getParent();
        System.out.println(parent);//null->BootStrapClassLoader (使用C语言编写)

        //String类的类加载器是什么？
        ClassLoader classLoader = String.class.getClassLoader();
        System.out.println(classLoader);//null ->BootstrapClassLoader

        //获取当类ClassLoaderTests的类加载器
        classLoader=ClassLoaderTests.class.getClassLoader();
        System.out.println(classLoader);//AppClassLoader
    }
}
